package bin_tree.leetcode;

/**
 * 二叉树的最长路径
 * @author yuisama
 * @date 2022/02/23 19:20
 **/
public class Num543_MaxRoad {
    // 存储当前二叉树的最长路径
    private int max = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        // 边界
        if (root == null || (root.left == null && root.right == null)) {
            // 空树或只有根节点，不可能存在边
            return 0;
        }
        height(root);
        return max;
    }
    // 递归去求每个节点的高度
    private int height(TreeNode root) {
        if (root == null) {
            return 0;
        }
        // 计算左子树高度
        int l = height(root.left);
        // 计算右子树高度
        int r = height(root.right);
        max = Math.max(max,(l + r));
        // 返回值是求树的深度
        return 1 + Math.max(l,r);
    }
}